package main

import (
	"fmt"
	"os"
)

/*
	错误处理
*/
func main() {
	openFile("./go-base/test.txt")
}

func openFile(filePath string) {
	file, err := os.Open(filePath)
	if err != nil {
		/*
			error是个interface{}类型的值，Open()方法的error实际是一个*PathError类型的，
			像这样知道error具体类型的时候就可以进一步对error做一些更精细的处理
		*/
		if pathError, ok := err.(*os.PathError); !ok {
			panic(err)
		} else {
			fmt.Println(pathError.Path)
			fmt.Println(pathError.Op)
			fmt.Println(pathError.Err)
		}

		return
	}
	defer file.Close()

	// writer := bufio.NewWriter(file)
	// defer writer.Flush()
	//
	// for i := 0; i < 20; i++ {
	// 	writer.WriteString(strconv.Itoa(i)+",")
	// }
	fmt.Println("writer successful!!!")
}
